
module.exports = async (params) => {

//更新笔记status为done，刷新donetime时间
//没有则创建二者
//没有属性则添加默认属性
new Notice("status done")
const { app,quickAddApi } = params;
// 获取obsidian的app和moment对象
const file = app.workspace.getActiveFile();
if (!file){
    new Notice("没有打开的文件！");
    return;
}

// 定义可选的枚举值
const options = ["doing", "done", "waiting", "pending"];

// 使用suggester显示选择列表
const selected = await quickAddApi.suggester(
    options,  // 显示选项
    options   // 对应返回的值（这里直接返回选项文本）
);

// 处理用户取消选择的情况
if (!selected) {
    console.log("用户取消了选择");
    return;
}


//要添加或更新的属性名status
const statusName = "status";
//属性值
const statusValue = selected;
//要添加或更新的属性名donetime
const donetimeName = "donetime";
//设置时区6偏移值
const offset = 8 * 60 * 60 * 1000;
//获取UTC时间
const now = new Date();
//获取北京时间
const beijingtime = new Date(now.getTime() + offset);
//格式化时间
const formattedDate = beijingtime.toISOString().replace('T',' ').substring(0,19);
const strdate = beijingtime.toISOString().replace('T','').replace(/-/g,'').replace(/:/g,'').substring(0,14);
new Notice(formattedDate);

try {
    //读取文件内容
    const content = await app.vault.read(file);
    // 匹配frontmatter的正色表达式，
    const frontmatterRegex = /^---\n([\s\S]*?)\n---/;
    const frontmatterMatch = content.match(frontmatterRegex);
    let newContent;
    if (frontmatterMatch) {
        //如果frontmatter存在，更新或插入属性
        const frontmatter = frontmatterMatch[1];
        const statusRegex = new RegExp(`^${statusName}:.*`,'m');
        const donetimeRegex = new RegExp(`^${donetimeName}:.*`,'m');
        
        if (frontmatter.match(statusRegex)){
            //如果属性存在，则更新它
            newContent = content.replace(statusRegex,`${statusName}: ${statusValue}`);

        }else {
            newContent = content.replace(frontmatterRegex,`---\n${frontmatter}\n${statusName}: ${statusValue}\n---`);
        }
        const frontmatterMatch2 = newContent.match(frontmatterRegex);
        const frontmatter2 = frontmatterMatch2[1];
        if (frontmatter2.match(donetimeRegex)){
            newContent2 = newContent.replace(donetimeRegex,`${donetimeName}: ${formattedDate}`);
        } else {
            newContent2 = newContent.replace(frontmatterRegex,`---\n${frontmatter2}\n${donetimeName}: ${formattedDate}\n---`);

        }
        newContent = newContent2;
    
    } else {
        // 如果frontmatter不存在，创建它并插入属性
        newContent = `---\nUID: ${strdate}\naliases: []\ntags: []\ntopic: 独立任务\n${statusName}: ${statusValue}\ntype: action\ndate: ${formattedDate}\n${donetimeName}: ${formattedDate}\n---\n${content}`;
    }
    await app.vault.modify(file,newContent);
    new Notice(`成功更新属性 "${statusName}" 为 "${statusValue}"`);

} catch (err) {
    new Notice(`操作失败：${err.message}`);
    console.error(err);
}

}
